type MyReturnType<T extends (...args: any) => any> = T extends (
  ...args: any[]
) => infer R
  ? R
  : any;

// 这道题就是想让我们实现ReturnType<T>内置工具类型，它的作用是获取函数的返回类型。
// 1.类型约束：确保传入的 T 是函数类型，即 T extends (...args: any[]) => any;
// 2.条件类型：等号后面是一个条件类型表达式，检查 T 是否匹配函数类型;
// 3.推断类型：如果是，就使用 infer 关键字来推断函数的返回类型;
